﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Reporting.WebForms;
using System.Data;
using DA_OOMModel;
using System.Globalization;

namespace DaCredito
{
    public partial class RPTRecebimentos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!this.IsPostBack)
            {
                ReportViewerMain.Visible = false;
            }

        }
        protected void EmitirRelatorio()
        {

            this.ValidaFiltros();

            ReportViewerMain.Visible = true;

            // define o modo Local como o processamneto para o ReportViewer 
            ReportViewerMain.ProcessingMode = ProcessingMode.Local;
            LocalReport loLocalReport = ReportViewerMain.LocalReport;

            // Obtem o caminho do relatório
            string lsCaminhoRelatorio = HttpContext.Current.Server.MapPath("~/");

            // Define o local do relatorio criado
            loLocalReport.ReportPath = lsCaminhoRelatorio + "RPTRecebimentos.rdlc";

            // Recupera o objeto Cliente da Sessão
            Cliente loCliente = (Cliente)Session["Cliente"];

             
            DateTime loDtVencimentoInicial = DateTime.Parse(Field_DtVencimentoInicial.value, new System.Globalization.CultureInfo("pt-BR"));
            DateTime loDtVencimentoFinal = DateTime.Parse(Field_DtVencimentoInicial.value, new System.Globalization.CultureInfo("pt-BR"));

            // obtem o dataset
            DataSet loDataSet = DataSourceRelatorios.GetInstance().Recebimentos(loCliente, loDtVencimentoInicial, loDtVencimentoFinal);

            // Cria uma fonte de dados no relatório para o dataset
            ReportDataSource loDataSource = new ReportDataSource();

            // define o nome do datasource
            loDataSource.Name = "RPTRecebimentos";

            // usa primeira tabela do dataset
            loDataSource.Value = loDataSet.Tables[0];

            // atribui o datasource ao relatorio
            loLocalReport.DataSources.Add(loDataSource);

        }
        protected void ValidaFiltros()
        {
            string lsDtVencimentoInicial = Field_DtVencimentoInicial.value;
            string lsDtVencimentoFinal = Field_DtVencimentoFinal.value;

            if (lsDtVencimentoInicial == null || lsDtVencimentoInicial.Trim() == "")
                throw new Exception("É necessário informar a data inicial de vencimento.");

            if (lsDtVencimentoFinal == null || lsDtVencimentoFinal.Trim() == "")
                throw new Exception("É necessário informar a data final de vencimento.");

            DateTime loDtVencimentoInicial;
            if (!DateTime.TryParse(lsDtVencimentoInicial, out loDtVencimentoInicial))
                throw new Exception("A data inicial de vencimento está em um formato inválido.");

            DateTime loDtVencimentoFinal;
            if (!DateTime.TryParse(lsDtVencimentoFinal, out loDtVencimentoFinal))
                throw new Exception("A data final de vencimento está em um formato inválido.");


           
        }


     
        protected void ButtonEmitir_Click(object sender, EventArgs e)
        {
            this.EmitirRelatorio();

        }

        protected void ReportViewerMain_DataBinding(object sender, EventArgs e)
        {

        }

        protected void ReportViewerMain_Load(object sender, EventArgs e)
        {

        }

        protected void ReportViewerMain_ReportError(object sender, ReportErrorEventArgs e)
        {

        }

        protected void ReportViewerMain_PageNavigation(object sender, PageNavigationEventArgs e)
        {

        }

    }
}